package;

import flixel.FlxG;
import flixel.util.FlxSave;

/**
 * Handy, pre-built Registry class that can be used to store 
 * references to objects and other things for quick-access. Feel
 * free to simply ignore it or change it in any way you like.
 */
class Reg
{
	/**
	 * Generic level variable that can be used for cross-state stuff.
	 * Example usage: Storing the current level number.
	 */
	public static var level:Int = 0;
	/**
	 * Generic scores Array that can be used for cross-state stuff.
	 * Example usage: Storing the scores for level.
	 */
	public static var scores:Array<Dynamic> = [];
	/**
	 * Generic score variable that can be used for cross-state stuff.
	 * Example usage: Storing the current score.
	 */
	public static var score:Int = 0;
	/**
	 * Generic bucket for storing different FlxSaves.
	 * Especially useful for setting up multiple save slots.
	 */
	public static var saves:Array<FlxSave> = [];
	
//--Nombre de los archivos que contienen los Niveles en orden en String---------

	public static var Level:Array<String> = ["Nivel1", "Nivel2"];
	
//---Dimensiones Basicas del juego (Suponiendo todas imagenes cuadradas)----

	//--Altura de los Bloques-----------
	public static var _altoB:Int = 60;
	
	//--Altura del Personaje-----------
	public static var _altoC:Int = 30;
	
	//--Altura de los Fotones-----------
	public static var _altoF:Int = 9;
	
	//--Altura de las Plataformas--------
	public static var _altoP:Int = 60;

//----Variables utilizadas en el PlayState-----------------------

	//---Velocidad con la que se mueve el personaje en el juego---
	public static var _charVelocity:Int = 350;
	
	//---Tiempo de giro: tiempo que demora la Plataforma Giratoria en girar el bloque---
	public static var _tiempoGiro:Float = 1;
		
	//---Periodo de giro: tiempo que demora la Plataforma Giratoria en comenzar a girar otra vez (Debe ser siempre mayor al tiempo de Giro)---
	public static var _periodoGiro:Float = 2;
	
	//---Tiempo que demora la Plataforma Giratoria en girar el bloque---
	public static var _vidaBloque:Int = 150;
	
	//---¿Esta agarrando algo el Personaje?--
	public static var _grab:Bool = false;
		
//-------------------Variables utilizadas en el EditorState------------------------------------
	
	//---¿Desactivo el Tutorial del Editor para que no le aparesca mas al inicial nuevamente?--
	public static var _desactivarTutorial:Bool = false;
	
	//----¿Esta siendo Testeado el juego en este momento?---
	public static var Testing:Bool = false;

	//---En este String se guarda temporalmente el nivel que se quiere Testear desde el Editor----
	public static var DefaultLevel:String;
	
	//--Siguiente Color Emisor---
	public static var E_Colors:Array<Int> = [9, 8, 7, 6, 5, 4, 3, 2, 1];

	public static var E_Descart:Array<Int> = [];
	
	//--Siguiente Color Receptor---
	public static var R_Colors:Array<Int> = [9, 8, 7, 6, 5, 4, 3, 2, 1];
	
	public static var R_Descart:Array<Int> = [];
	
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------


	public static function opacar(foton:Fotones , bloque:Bloques):Void //Hace que los fotones no atraviesen las cosas
	{
		if (foton._fotonColor != bloque._color)
		{
			foton.exists = false;
		}
	}
}